<?php

namespace Modules\Shop\Entities;

use Illuminate\Database\Eloquent\Model;
use houdunwang\arr\Arr;
class Category extends Model
{
    //protected $fillable = [];

    //设置不允许批量填充的字段数据,那么没再数组内的就都允许
    protected $guarded = [];

    /**
     * 模型关联
     */
    public function fenlei(){
        //第一个参数是被关联模型
        //第二个参数是外键
        //第三个参数是内键
        //反向1对多的时候内外键调换位置
        return $this->belongsTo(Category::class,'pid','id');
    }

    /**
     * 树状结构
     */
    public static function getTreeCategory($cate=null){
        //获取所有分类数据
        $data = self::get();
        //判断$cate是否为null，如果不为null，就传递一个对象进来
        if (!is_null($cate)){
            foreach ($data as $k => $v){
                //找到当前分类的父级数据，给父级数据添加选中效果
                $data[$k]['_selected']=$cate['pid']==$v['id'];
                //修改的时候，自己不能选择自己和自己的子集作为自己的父级
                $data[$k]['_disabled']=$cate['id']==$v['id']||Arr::isChild($data,$v['id'],$cate['id'],'id','pid');
            }
        }
        //获得树状结构
        $category = Arr::tree($data?$data->toArray():[],'cname','id','pid');
        return $category;
    }

    /**
     * @param $cate\
     * 判断是否存在子分类
     */
    public static function hasChildCategory($cate){
        //获得所有分类数据
        $data = self::get();
        //如果$cate有子分类，就返回真，否则返回假
        return Arr::hasChild($data,$cate['id'],'pid');
    }

}
